<?php

/**
 * PatrullasController
 * 
 * @author
 * @version 
 */

require_once 'Zend/Controller/Action.php';

class PatrullasController extends BaseController  {
	
	/**
	 * The default action - show the home page
	 */
	public function indexAction() {
		$this->view->title = "Administración de Patrullas";
		$tblPatrullas = new PatrullasModel();
		$patrullasMasculinasArray = array();
		$patrullasFemeninasArray = array();
			
		
		$cGru = "";
		foreach ($this->view->user->roles as $rol) {
			$cGru = $rol->cGru;
			if (!empty($cGru)) {
				break;
			}
		}
		$this->view->cGru = $cGru;		
		
		
		if ($this->view->user->isScout()) {
			
			$tblPatrullasMiembros = new PatrullasMiembrosModel();
			$cJov = $this->view->user->credencial - 1000000;
			$patrullaMiembro = $tblPatrullasMiembros->find($cJov);

			//Si existe una patrulla, mostrarla y listar sus miembros
			if ($patrullaMiembro->count() > 0) {
				$patrulla = $patrullaMiembro->current()->findParentPatrullasModel();
				
				$pat = $patrulla->toArray();
				$miembros = $patrulla->findQryScoutsEnPatrullaModel();
				
				$miembrosArray = array();
				foreach ($miembros as $mbr) {
					$mbrArray = $mbr->toArray();
					$miembrosArray[] = $mbrArray['zNom'];
				}
				$pat['miembros'] = $miembrosArray;
				
				if ($patrulla->cUni == 5) {
					$patrullasMasculinasArray[] = $pat;
				} else if ($patrulla->cUni == 6) {
					$patrullasFemeninasArray[] = $pat;
				}
				
			} else {
				//Si no existe patrulla, ir directo a crearla

				$cUni = "";
				foreach ($this->view->user->roles as $rol) {
					$cUni = $rol->cUni;
					if (!empty($cUni)) {
						break;
					}
				}
			
				$this->_redirect("/patrullas/modificar?cGru=$cGru&cUni=$cUni");
			}
			
		} else if ($this->view->user->isAdultoGrupo()) {
			$patrullas = $tblPatrullas->fetchAll("cGru = $cGru");
			
			foreach ($patrullas as $patrulla) {
				$pat = $patrulla->toArray();
				$miembros = $patrulla->findQryScoutsEnPatrullaModel();
				
				$miembrosArray = array();
				foreach ($miembros as $mbr) {
					$mbrArray = $mbr->toArray();
					$miembrosArray[] = $mbrArray['zNom'];
				}
				
				$pat['miembros'] = $miembrosArray;
				
				if ($patrulla->cUni == 5) {
					$patrullasMasculinasArray[] = $pat;
				} else if ($patrulla->cUni == 6) {
					$patrullasFemeninasArray[] = $pat;
				}
			}
		}
		$this->view->patrullasMasculinas = $patrullasMasculinasArray;
		$this->view->patrullasFemeninas = $patrullasFemeninasArray;
	}

	/**
	 * The default action - show the home page
	 */
	public function inscribirAction() {
		$this->view->title = "Inscribir Patrulla";
		if ($this->view->user->isScout()) {
			$this->_forward("index");
		}
	}
	
	/**
	 * The permite editar la patrulla
	 */
	public function modificarAction() {
		$tblPatrullas = new PatrullasModel();
		$this->view->title = "Inscribir - Modificar Patrulla";
		$this->view->cUni = $this->getRequest()->getParam( "cUni" );
		$this->view->cPatrulla = $this->getRequest()->getParam( "cPatrulla" );

		$cGru = "";
		foreach ($this->view->user->roles as $rol) {
			$cGru = $rol->cGru;
			if (!empty($cGru)) {
				break;
			}
		}
		
		$this->view->cGru = $cGru;		
		
		$tblScoutSinPatrulla = new QryScoutsSinPatrullaModel();
		
		if (Zend_Validate::is($this->view->cPatrulla, 'NotEmpty')) {
			$this->view->patrulla = $tblPatrullas->find($this->view->cPatrulla)->current();
			$cUni = $this->view->patrulla->cUni;
			$cPatrulla = $this->view->cPatrulla;
			$this->view->scoutsSinPatrulla = $tblScoutSinPatrulla->fetchAll("cGru = $cGru and cUni = $cUni");

			$tblScoutsEnPatrulla = new QryScoutsEnPatrullaModel();
			$this->view->scoutsEnPatrulla = $tblScoutsEnPatrulla->fetchAll("cPatrulla = $cPatrulla");
			
			$tblScoutsEnPatrullaAClan = new QryScoutsEnPatrullaAClanModel();
			$qryScoutsEnPatrullaAClan = $tblScoutsEnPatrullaAClan->fetchAll("cPatrulla = $cPatrulla");
			if ($qryScoutsEnPatrullaAClan->count() > 0) {
				$this->view->scoutsAClan = $qryScoutsEnPatrullaAClan->toArray();  
			}
		
		} else if (in_array($this->view->cUni, array('5', '6'))) {
			$cUni = $this->view->cUni;
			$this->view->scoutsSinPatrulla = $tblScoutSinPatrulla->fetchAll("cGru = $cGru and cUni = $cUni");
			
		} else {
			$mensajesValidacion[] = "Es requerido que indique a que tropa pertenece la patrulla a crear o el código de la patrulla a modificar.";
			if (isset($this->view->mensajesValidacion)) {
				$this->view->mensajesValidacion = array_merge($this->view->mensajesValidacion, $mensajesValidacion);
			} else {
				$this->view->mensajesValidacion = $mensajesValidacion;
			}
			$this->_forward("index");
		}
	}
	
	/**
	 * The permite editar la patrulla
	 */
	public function guardarpatrullaAction() {
		$mensajesValidacion = array();
		$cGru = $this->getRequest()->getParam( "cGru" );
		$cUni = $this->getRequest()->getParam( "cUni" );
		$cPatrulla = $this->getRequest()->getParam( "cPatrulla" );
		$miembros =  $this->getRequest()->getParam( "miembros" );
		$nombre = $this->getRequest()->getParam( "nombre" );

		if (empty($nombre)) {
			$mensajesValidacion[] = "Debe indicar el nombre de la patrulla";
		}

		if (empty($miembros)) {
			$mensajesValidacion[] = "Debe agregar miembros a la patrulla";
		}

		$tblPatrulla = new PatrullasModel();
		$patrulla = NULL;
		if (empty($cPatrulla)) {
			if (empty($cGru) || empty($cUni)) {
				$mensajesValidacion[] = "No se ha podido identificar el grupo o unidad al que pertenece la patrulla.";
			}			
		} else {
			$patrulla = $tblPatrulla->find($cPatrulla);
			if ($patrulla->count() == 0) {
				$mensajesValidacion[] = "No se encuentra la patrulla indicada.";
			}
		}
		
		if (!empty($mensajesValidacion) > 0) {
			if (isset($this->view->mensajesValidacion)) {
				$this->view->mensajesValidacion = array_merge($this->view->mensajesValidacion, $mensajesValidacion);
			} else {
				$this->view->mensajesValidacion = $mensajesValidacion;
			}
			$this->_forward("modificar");
		} else {
			$patrullaRow = NULL;
			$patrullaData['nombre'] = $nombre;
			$patrullaData['usuarioModificador'] = $this->view->user->codUsuario;
			
			if ($this->view->user->isScout()) {
				$cJovUsuario = $this->view->user->credencial - 1000000;
				if (!in_array($cJovUsuario, $miembros)) {
					$miembros[] = $cJovUsuario;
				}
			}
			
			if (!empty($cPatrulla) && $patrulla->count() > 0) {
				$patrullaRow = $patrulla->current();

				$patrullaRow->setFromArray($patrullaData);
				$patrullaRow->save();				
			} else {
				$patrullaData['cUni'] = $cUni;
				$patrullaData['cGru'] = $cGru;
				$patrullaData['usuarioCreador'] = $this->view->user->codUsuario;
				$patrullaData['fechaCreacion'] = Zend_Date::now()->toString("yyyy-MM-dd HH:mm:ss");

				$cPatrulla = $tblPatrulla->insert($patrullaData);
			}
			
			$where = "cPatrulla = $cPatrulla";
			$tblPatrullaMiembros = new PatrullasMiembrosModel();
			$miembrosActualesRows = $tblPatrullaMiembros->fetchAll($where)->toArray();
			
			$miembrosActuales = array();
			foreach ($miembrosActualesRows as $mbrRow) {
				$miembrosActuales[] = $mbrRow['cJov'];
			}
			
			$nuevosMiembros = array_diff($miembros, $miembrosActuales);
			foreach ($nuevosMiembros as $nuevoMiembro) {
				$registro = array();
				$registro['cJov'] = $nuevoMiembro;
				$registro['cPatrulla'] = $cPatrulla;
				$tblPatrullaMiembros->insert($registro);
			}
			
			$elimMiembros = array_diff($miembrosActuales, $miembros);
			foreach ($elimMiembros as $elimMiembro) {
				$tblPatrullaMiembros->delete("cJov = $elimMiembro");
			}
			$this->_redirect("/patrullas/");
		}
	}
	
}
